package br.com.vti.sisp_sicrim.antigo.controller.relatorios;

import java.io.FileNotFoundException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.util.Relatorios;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela
 * Scrprb01Report
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Scrprb01Report {
	private String nomeClasse;
	private int dataCorrente;
	private String texto1;
	private String texto2;
	private String texto3;
	private String id;
	private String im;
	private String ia;
	private String nomeI;
	private String nomeR;
	private int aaaammdd;
	private Long registroEstadualGeral; // DB
	private String apelidoAlcunhas; // DB
	private String inddir; // DB
	private String indesq; // DB
	private String meddir; // DB
	private String medesq; // DB
	private String mindir; // DB
	private String minesq; // DB
	private String anudir; // DB
	private String anuesq; // DB
	private String polesq; // DB
	private String poldir; // DB
	private String nomeMae; // DB
	private String naturalidade; // DB
	public String nome;
	public String idma;
	private String[] jObservacoez = new String[151];
	private String horaCorrente;
	private Result result;
	private Sessao sessao;
	private Relatorios report;
	// Classes views
	SicCadastro criminalView = new SicCadastro(); // Classes includes

	public Scrprb01Report() throws JRException, ParseException {
		inicializar();
	}

	public Scrprb01Report(Sessao sessao) throws JRException, ParseException {
		this.sessao = sessao;
		inicializar();
	}

	public void inicializar() throws JRException, ParseException {
		report = new Relatorios();
		dataCorrente = 0;
		texto1 = "";
		texto2 = "";
		texto3 = "";
		aaaammdd = 0;
		Arrays.fill(jObservacoez, "");
		nomeClasse = this.getClass().getSimpleName(); // *PROGRAM
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
		report.setNumeroRel(1, "D");
		{
			report.setNumeroLinhaRel(3, 3);
			{
				report.adicionaCampo(1, 37, "lit_1_37", "C", "", "*** GOVERNO DO ESTADO DO MARANHAO ***");
				report.adicionaCampo(23, 12, "lit_23_12", "C", "", "DT. EMISSAO:");
				report.adicionaCampo(36, 8, "dataCorrente", "N", "99/99/9999", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(4, 2);
			{
				report.adicionaCampo(1, 74, "lit_1_74", "C", "", "*** SECRETARIA DE SEGURANCA PUBLICA                          - SSP     ***");
				report.adicionaCampo(76, 8, "horaCorrente", "S", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(5, 1);
			{
				report.adicionaCampo(75, 8, "lit_75_8", "C", "", "SCRPR001");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(6, 1);
			{
				report.adicionaCampo(20, 34, "lit_20_34", "C", "", "*** INSTITUTO DE IDENTIFICACAO ***");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(8, 2);
			{
				report.adicionaCampo(20, 47, "lit_20_47", "C", "", "FOLHA DE ANTECEDENTES CRIMINAIS    REGISTRO N.:");
				report.adicionaCampo(1, 13, "Registroestadualgeral", "N", "ZZZZZZ99999", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(10, 1);
			{
				report.adicionaCampo(3, 77, "Texto1", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(12, 1);
			{
				report.adicionaCampo(3, 77, "Texto2", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(14, 8);
			{
				report.adicionaCampo(3, 24, "lit_3_24", "C", "", "EM ATENCAO AO SEU OFICIO");
				report.adicionaCampo(28, 23, "Texto3", "X", "", "");
				report.adicionaCampo(52, 12, "lit_52_12", "C", "", ", DATADO DE ");
				report.adicionaCampo(65, 2, "Id", "N", "99", "");
				report.adicionaCampo(68, 1, "lit_68_1", "C", "", "/");
				report.adicionaCampo(70, 2, "Im", "N", "99", "");
				report.adicionaCampo(73, 1, "lit_73_1", "C", "", "/");
				report.adicionaCampo(75, 4, "Ia", "N", "99", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(16, 2);
			{
				report.adicionaCampo(3, 29, "lit_3_29", "C", "", "INFORMAMOS QUE O INDICIADO(A)");
				report.adicionaCampo(33, 47, "NomeI", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(18, 3);
			{
				report.adicionaCampo(3, 13, "NomeR", "X", "", "");
				report.adicionaCampo(17, 6, "lit_17_6", "C", "", " VULGO");
				report.adicionaCampo(24, 30, "Apelidoalcunhas", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(20, 13);
			{
				report.adicionaCampo(3, 5, "lit_3_5", "C", "", "F.D: ");
				report.adicionaCampo(9, 7, "Poldir", "X", "", "");
				report.adicionaCampo(1, 7, "Inddir", "X", "", "");
				report.adicionaCampo(1, 7, "Meddir", "X", "", "");
				report.adicionaCampo(1, 7, "Anudir", "X", "", "");
				report.adicionaCampo(1, 7, "Mindir", "X", "", "");
				report.adicionaCampo(2, 7, "Polesq", "X", "", "");
				report.adicionaCampo(1, 7, "Indesq", "X", "", "");
				report.adicionaCampo(1, 7, "Medesq", "X", "", "");
				report.adicionaCampo(1, 7, "Anuesq", "X", "", "");
				report.adicionaCampo(1, 7, "Minesq", "X", "", "");
				report.adicionaCampo(2, 11, "lit_2_11", "C", "", "  FILHO(A) ");
				report.adicionaCampo(14, 60, "Nomemae", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(22, 4);
			{
				report.adicionaCampo(3, 20, "lit_3_20", "C", "", "DATA DE NASCIMENTO: ");
				report.adicionaCampo(24, 8, "Aaaammdd", "N", "99/99/9999", "");
				report.adicionaCampo(33, 10, "lit_33_10", "C", "", ", NATURAL ");
				report.adicionaCampo(44, 35, "Naturalidade", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(24, 1);
			{
				report.adicionaCampo(3, 69, "lit_3_69", "C", "", "CONSTA NO REGISTRO CRIMINAL DESTE INSTITUTO AS SEGUINTES OCORRENCIAS:");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(26, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_1", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(27, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_2", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(28, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_3", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(29, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_4", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(30, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_5", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(31, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_6", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(32, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_7", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(33, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_8", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(34, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_9", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(35, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_10", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(36, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_12", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(37, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_13", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(38, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_14", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(39, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_15", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(40, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_16", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(41, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_17", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(42, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_18", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(43, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_19", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(44, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_21", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(45, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_22", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(46, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_23", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(47, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_24", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(48, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_25", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(49, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_26", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(50, 1);
			{
				report.adicionaCampo(3, 77, "Jobservacoez_27", "X", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(51, 1);
			{
				report.adicionaCampo(3, 15, "lit_3_15", "C", "", "ATENCIOSAMENTE,");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(54, 1);
			{
				report.adicionaCampo(3, 40, "lit_3_40", "C", "", "SAO LUIS, _____ DE ________ DE ________ ");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(59, 2);
			{
				report.adicionaCampo(3, 37, "lit_3_37", "C", "", "____________________________________ ");
				report.adicionaCampo(8, 37, "lit_8_37", "C", "", "____________________________________ ");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(60, 2);
			{
				report.adicionaCampo(3, 38, "lit_3_38", "C", "", " DIR. DO INSTITUTO DE IDENTIFICACAO   ");
				report.adicionaCampo(7, 37, "lit_7_37", "C", "", "      ENC. DA DIVISAO CRIMINAL       ");
				report.setFimLinhaRel();
			}
		}
		setHoraCorrente(horaCorrente);
		setNomeClasse(nomeClasse);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		return true;
	}

	public int getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(int dataCorrente) throws ParseException {
		this.dataCorrente = dataCorrente;
		report.adicionaValorReport("dataCorrente", dataCorrente);
	}

	public String getTexto1() {
		return texto1;
	}

	public void setTexto1(String texto1) throws ParseException {
		this.texto1 = texto1;
		report.adicionaValorReport("Texto1", texto1);
	}

	public String getTexto2() {
		return texto2;
	}

	public void setTexto2(String texto2) throws ParseException {
		this.texto2 = texto2;
		report.adicionaValorReport("Texto2", texto2);
	}

	public String getTexto3() {
		return texto3;
	}

	public void setTexto3(String texto3) throws ParseException {
		this.texto3 = texto3;
		report.adicionaValorReport("Texto3", texto3);
	}

	public String getId() {
		return id;
	}

	public void setId(String id) throws ParseException {
		this.id = id;
		report.adicionaValorReport("Id", id);
	}

	public String getIm() {
		return im;
	}

	public void setIm(String im) throws ParseException {
		this.im = im;
		report.adicionaValorReport("Im", im);
	}

	public String getIa() {
		return ia;
	}

	public void setIa(String ia) throws ParseException {
		this.ia = ia;
		report.adicionaValorReport("Ia", ia);
	}

	public String getNomeI() {
		return nomeI;
	}

	public void setNomeI(String nomeI) throws ParseException {
		this.nomeI = nomeI;
		report.adicionaValorReport("NomeI", nomeI);
	}

	public String getNomeR() {
		return nomeR;
	}

	public void setNomeR(String nomeR) throws ParseException {
		this.nomeR = nomeR;
		report.adicionaValorReport("NomeR", nomeR);
	}

	public int getAaaammdd() {
		return aaaammdd;
	}

	public void setAaaammdd(int aaaammdd) throws ParseException {
		this.aaaammdd = aaaammdd;
		report.adicionaValorReport("Aaaammdd", aaaammdd);
	}

	public String[] getJobservacoez() {
		return jObservacoez;
	}

	public void setJobservacoez(String[] jObservacoez) throws ParseException {
		this.jObservacoez = jObservacoez;
		report.adicionaValorReport("Jobservacoez", jObservacoez);
	}

	public String getJobservacoez(int index) {
		return jObservacoez[index];
	}

	public void setJobservacoez(int index, String jObservacoez) throws ParseException {
		this.jObservacoez[index] = jObservacoez;
		//report.adicionaValorReport("Jobservacoez"+"["+String.valueOf(index)+"]", jObservacoez);
		report.adicionaValorReport("Jobservacoez_"+String.valueOf(index), jObservacoez);
	} // /

	public String getIdma() {
		return this.id + this.im + this.ia;
	}

	public void setIdma(String idma) throws ParseException {
		this.idma = idma;
		this.id = UtilBean.subStr(idma, 0, 2);
		report.adicionaValorReport("Id", UtilBean.subStr(idma, 0, 2));
		this.im = UtilBean.subStr(idma, 2, 2);
		report.adicionaValorReport("Im", UtilBean.subStr(idma, 2, 2));
		this.ia = UtilBean.subStr(idma, 4, 4);
		report.adicionaValorReport("Ia", UtilBean.subStr(idma, 4, 4));
	} // /

	public String getNome() {
		return this.nomeI + this.nomeR;
	}

	public void setNome(String nome) throws ParseException {
		this.nome = nome;
		this.nomeI = UtilBean.subStr(nome, 0, 47);
		report.adicionaValorReport("NomeI", UtilBean.subStr(nome, 0, 47));
		this.nomeR = UtilBean.subStr(nome, 47, 13);
		report.adicionaValorReport("NomeR", UtilBean.subStr(nome, 47, 13));
	}

	public String getNomeClasse() {
		return nomeClasse;
	}

	public void setNomeClasse(String nomeClasse) throws ParseException {
		this.nomeClasse = nomeClasse;
		report.adicionaValorReport("nomeClasse", nomeClasse);
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) throws ParseException {
		this.horaCorrente = horaCorrente;
		report.adicionaValorReport("horaCorrente", horaCorrente);
	}

	public void setPageSize(int pagesize) throws JRException {
		report.setPageSize(pagesize);
	}

	public void setLineSize(int linesize) {
		report.setLineSize(linesize);
	}

	public int getPageSize() {
		return report.getPageSize();
	}

	public int getPageLine() {
		return report.getPageLine();
	}

	public void saltaLinhas(int qtdLinhas) throws ParseException, JRException {
		report.saltaLinhas(qtdLinhas);
	}

	public void gravaRelatorio(int nroRel) throws ParseException, JRException {
		report.gravaRelatorio(report, nroRel, false);
	}

	public void imprimir() throws FileNotFoundException, JRException {
		report.imprimir();
	}

	public Long getRegistroEstadualGeral() {
		return registroEstadualGeral;
	}

	public void setRegistroEstadualGeral(Long registroEstadualGeral) throws ParseException {
		this.registroEstadualGeral = registroEstadualGeral;
		report.adicionaValorReport("registroEstadualGeral", registroEstadualGeral);
	}

	public String getApelidoAlcunhas() {
		return apelidoAlcunhas;
	}

	public void setApelidoAlcunhas(String apelidoAlcunhas) throws ParseException {
		this.apelidoAlcunhas = apelidoAlcunhas;
		report.adicionaValorReport("apelidoAlcunhas", apelidoAlcunhas);
	}

	public String getInddir() {
		return inddir;
	}

	public void setInddir(String inddir) throws ParseException {
		this.inddir = inddir;
		report.adicionaValorReport("inddir", inddir);
	}

	public String getIndesq() {
		return indesq;
	}

	public void setIndesq(String indesq) throws ParseException {
		this.indesq = indesq;
		report.adicionaValorReport("indesq", indesq);
	}

	public String getMeddir() {
		return meddir;
	}

	public void setMeddir(String meddir) throws ParseException {
		this.meddir = meddir;
		report.adicionaValorReport("meddir", meddir);
	}

	public String getMedesq() {
		return medesq;
	}

	public void setMedesq(String medesq) throws ParseException {
		this.medesq = medesq;
		report.adicionaValorReport("medesq", medesq);
	}

	public String getMindir() {
		return mindir;
	}

	public void setMindir(String mindir) throws ParseException {
		this.mindir = mindir;
		report.adicionaValorReport("mindir", mindir);
	}

	public String getMinesq() {
		return minesq;
	}

	public void setMinesq(String minesq) throws ParseException {
		this.minesq = minesq;
		report.adicionaValorReport("minesq", minesq);
	}

	public String getAnudir() {
		return anudir;
	}

	public void setAnudir(String anudir) throws ParseException {
		this.anudir = anudir;
		report.adicionaValorReport("anudir", anudir);
	}

	public String getAnuesq() {
		return anuesq;
	}

	public void setAnuesq(String anuesq) throws ParseException {
		this.anuesq = anuesq;
		report.adicionaValorReport("anuesq", anuesq);
	}

	public String getPolesq() {
		return polesq;
	}

	public void setPolesq(String polesq) throws ParseException {
		this.polesq = polesq;
		report.adicionaValorReport("polesq", polesq);
	}

	public String getPoldir() {
		return poldir;
	}

	public void setPoldir(String poldir) throws ParseException {
		this.poldir = poldir;
		report.adicionaValorReport("poldir", poldir);
	}

	public String getNomeMae() {
		return nomeMae;
	}

	public void setNomeMae(String nomeMae) throws ParseException {
		this.nomeMae = nomeMae;
		report.adicionaValorReport("nomeMae", nomeMae);
	}

	public String getNaturalidade() {
		return naturalidade;
	}

	public void setNaturalidade(String naturalidade) throws ParseException {
		this.naturalidade = naturalidade;
		report.adicionaValorReport("naturalidade", naturalidade);
	}
}
